import Mock from 'mockjs-ts'
import { UserInfo } from '../domain/user';
import { GroupInfo } from '../domain/group';

// 登录接口
// Mock.mock('/login', 'post', (options: any) => {
//     const userInfo: UserInfo = {
//         userId: '@guid',
//         userName: '@cname',
//         userPortrait: '@image',
//         regTime: '@date',
//     };
//     const result = Mock.mock({
//         user: userInfo,
//         token: Mock.Random.string(64)
//     });

//     return {
//         code: 200,
//         data: result
//     }
// });


// 会话列表
Mock.mock('/conversation/list', 'get', (options: any) => {
    const dataTemplate = {
        userName: '@cname',
        userPortrait: '@image',
        targetId: '@integer(1, 100)', // 生成 1 到 100 之间的整数
        lastMessage: {
            content: '@csentence', // 生成长度为 5 到 10 个单词的句子
        },
        unreadCount: '@integer(0, 10)', // 生成 0 到 10 之间的整数
        type: '@integer(1, 2)', // 生成 1 到 3 之间的整数
    };
    const data: any = Mock.mock({
        'data|10': [dataTemplate], // 生成 100 个数据条目
    });


    return {
        code: 200,
        ...data
    }
});


// 好友列表
Mock.mock('/friend/list', 'get', (options: any) => {
    const userInfo: UserInfo = {
        userId: '@guid',
        userName: '@cname',
        userPortrait: '@image',
        regTime: '@date',
    };
    const data: any = Mock.mock({
        'data|100': [userInfo], // 生成 100 个数据条目
    });
    return {
        code: 200,
        ...data
    }
});


Mock.mock('/group/info', 'post', (options: any) => {
    const body = JSON.parse(options.body);

    const userInfo: UserInfo = {
        userId: '@guid',
        userName: '@cname',
        userPortrait: '@image',
        regTime: '@date',
    };
    const data: any = Mock.mock({
        'data|100': [userInfo], // 生成 100 个数据条目
    });

    const users = [...data.data];

    const group: GroupInfo = {
        groupId: body.id,
        userName: "@cname",
        userPortrait: "http://dummyimage.com/160x600/481E1C/EE3F4D",
        introduction: '',
        creator: users[0],
        disturb: false,
        users: users,
        prohibit: []
    }


    const groupInfo: any = Mock.mock(group);


    return {
        code: 200,
        data: groupInfo
    }
});

